using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Entidades;

namespace VtasMkt.Ventas.Comision
{
    public partial class frmAdministrarComision : Form
    {

        #region Variables y constantes

        // DataTable que se empleara para la vista previa de la impresion
        DataTable _dtImp = new DataTable();

        #endregion

        #region Eventos del Formulario


        // Constructor del formulario
        public frmAdministrarComision()
        {
            InitializeComponent();
        }

        // Al cargar el formulario
        private void frmActualizarComision_Load(object sender, EventArgs e)
        {
            CargarCombo();
            MostrarInfoGrilla();
        }

        // Nuevo registro
        private void btnNuevo_Click(object sender, EventArgs e)
        {
            VtasMkt.Ventas.Comision.frmRegistrarComision registrarComisionWin = new VtasMkt.Ventas.Comision.frmRegistrarComision();
            registrarComisionWin.Tag = AccionMnt.NuevoRegistro;
            registrarComisionWin.ShowDialog();
            MostrarInfoGrilla();
        }

        // Edita el registro
        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (dgvMain.RowCount > 0)
            {
                Entidades.ComisionVendedor comisionVendedor = new ComisionVendedor();
                comisionVendedor.CodigoVendedor = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                comisionVendedor.TipoComision = (short)(this.dgvMain.SelectedRows[0].Cells[1].Value);
                comisionVendedor.NombreVendedor = (string)(this.dgvMain.SelectedRows[0].Cells[2].Value);
                comisionVendedor.Valor = (int)(this.dgvMain.SelectedRows[0].Cells[4].Value);

                VtasMkt.Ventas.Comision.frmRegistrarComision registrarComisionWin = new VtasMkt.Ventas.Comision.frmRegistrarComision(comisionVendedor);
                registrarComisionWin.Tag = AccionMnt.EditarRegistro;
                registrarComisionWin.ShowDialog();

                MostrarInfoGrilla();
            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        // Elimina el registro
        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (dgvMain.RowCount > 0)
            {
                Entidades.ComisionVendedor comisionVendedor = new ComisionVendedor();
                comisionVendedor.CodigoVendedor = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                comisionVendedor.TipoComision = (short)(this.dgvMain.SelectedRows[0].Cells[1].Value);
                comisionVendedor.NombreVendedor = (string)(this.dgvMain.SelectedRows[0].Cells[2].Value);
                comisionVendedor.Valor = (int)(this.dgvMain.SelectedRows[0].Cells[4].Value);

                VtasMkt.Ventas.Comision.frmRegistrarComision registrarComisionWin = new VtasMkt.Ventas.Comision.frmRegistrarComision(comisionVendedor);
                registrarComisionWin.Tag = AccionMnt.EliminarRegistro;
                registrarComisionWin.ShowDialog();

                MostrarInfoGrilla();
            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        // Cierra el formulario
        private void btnCerrar_Click(object sender, EventArgs e)
        {
            Close();
        }

        // Ejecuta la busqueda de registros
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            MostrarInfoGrilla();
        }

        // Muestra el formulario de vista previa para impresion
        private void btnImprimir_Click(object sender, EventArgs e)
        {
            // Prepara el DataSet para la vista previa
            dsComisionVendedor dsComision = new dsComisionVendedor();
            dsComision.dtComisionVendedor.Merge(_dtImp);

            // Muestra el formulario de vista previa con el reporte
            VtasMkt.General.frmVerReporte verRptWin = new VtasMkt.General.frmVerReporte(dsComision);
            verRptWin.MdiParent = frmMain.ActiveForm;
            verRptWin.Show();
        }

        #endregion

        #region Metodos privados

        // Obtiene y muestra la informacion en la grilla del formulario
        private void MostrarInfoGrilla()
        {
            try
            {

                // Obtiene la informacion y carga la grilla
                string apellidoVendedor = txtVendedor.Text;
                string tipoComision = cboTipoComision.SelectedValue.ToString();
                Negocio.Controladora.ActualizarComision actComisiones = new Negocio.Controladora.ActualizarComision();
                DataTable dtInfo = actComisiones.ListarComisionVendedor(apellidoVendedor, tipoComision);
                dgvMain.DataSource = dtInfo;

                // Deja en memoria el DataTable para la impresion
                _dtImp = dtInfo;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        // Carga los comboboxs
        private void CargarCombo()
        {
            try
            {
                // Obtiene la lista y agrega un item dummy para el filtro
                Negocio.Controladora.ActualizarComision actComisiones = new Negocio.Controladora.ActualizarComision();
                DataTable dtInfo = actComisiones.ListarTipoComision();
                dtInfo.Rows.InsertAt(dtInfo.NewRow(), 0);

                // Carga el combobox de tipo de comision
                cboTipoComision.DataSource = dtInfo;
                cboTipoComision.ValueMember = "iTipoComision";
                cboTipoComision.DisplayMember = "nTipoComision";

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        #endregion


    }
}